////////////////////////////////////////
//	File Header
//	Author: Stephen Ringer | stephen.ringer@gmail.com
//	File: SAGAMCFree.h
//
////////////////////////////////////////
#pragma once
////////////////////////////////////////
//	File Includes
#include "SAGAGeneral.h"
//
////////////////////////////////////////

////////////////////////////////////////
//	Class Name: SAGAMCFree
class SAGAMCFree : public SAGAMovementController 
{
public:
	SAGAMCFree();
	virtual ~SAGAMCFree();

	virtual void Update(float fElapsedTime);

	// use this functions to influence movement
	void AddRotationSpeed(float sx, float sy, float sz);
	void SetRotationSpeed(float sx, float sy, float sz);
	void SetRotationSpeedX(float f) { m_fPitchSpd = f; }
	void SetRotationSpeedY(float f) { m_fYawSpd   = f; }
	void SetRotationSpeedZ(float f) { m_fRollSpd  = f; }
	void AddThrust(float fThrust)   { m_fThrust += fThrust; }
	void SetThrust(float fThrust)   { m_fThrust  = fThrust; }

	// set attributes directly (avoid this except for initialization)
	void SetRotation(float rx, float ry, float rz);
	void SetPos(SAGAVector &vc)   { memcpy(&m_vcPos, &vc, sizeof(SAGAVector));   }
	void SetRight(SAGAVector &vc) { memcpy(&m_vcRight, &vc, sizeof(SAGAVector)); }
	void SetUp(SAGAVector &vc)    { memcpy(&m_vcUp,  &vc, sizeof(SAGAVector));   }
	void SetDir(SAGAVector &vc)   { memcpy(&m_vcDir, &vc, sizeof(SAGAVector));   }
};
//
////////////////////////////////////////
